#pragma once
#include <igl/principal_curvature.h>


//#include <pcl/features/normal_3d.h>
//#include <pcl/point_types.h>
//#include <pcl/features/principal_curvatures.h>

#include <igl/readSTL.h>
#include "Data_SP.h"

class GeneCurvature
{
public:

	void Compute_curvature_dirction(const Eigen::MatrixXd& V0, Eigen::MatrixXd& PD1, Eigen::MatrixXd& PD2, const osg::Vec3& point, osg::Vec3& dir1, osg::Vec3& dir2);
	void TransformPoint(const osg::Vec3& start, const osg::Vec3& localDirection, const osg::Vec3& localXAxis, const osg::Vec3& localYAxis, osg::Vec3& mainDirection);
	void VectorProjection();
	void CheckCurvature(Eigen::MatrixXd& PD1, Eigen::MatrixXd& PD2);
	void Gene_pricurvature(Eigen::MatrixXd& V, Eigen::MatrixXi& F, Eigen::MatrixXd& PD1, Eigen::MatrixXd& PD2, Eigen::VectorXd& PV1, Eigen::VectorXd& PV2);
private:

};
